Software piracy is a growing problem. There are two types of piracy, one by retail users of software and the other by manufacturers/distributors and other entities that bundle or pre-install software. Traditional schemes to ward off such piracy include the use of key codes or serial numbers. The serial number is often physically printed on the media (such as a Compact Disc) on which the software is being distributed. When installing or activating the software for use, this serial number must be input by the user in order for the software to function. However, in such schemes, serial numbers which are only printed on the disc or on packaging can be shared or distributed to a wide number of unauthorized users. When such unauthorized users obtain a copy of the software, it can be activated for functional use by entering the stolen serial number.
Another protection in the form of keys is slightly different, in that keys are embedded in binary form into a compact disc such that the original disc or an exact copy thereof is required. The software program when installing or activating searches for this key in order to function, thereby removing the user from the authorization process. However, it is now common for any such software to be hacked by the use of key generation software. Key generation software includes software which generates the necessary key from examining the software itself. This allows even a non disc-to-disc copy, such as an Internet distributed copy, of the software to used by unauthorized users. Worse yet, both schemes of keys and serial numbers do not prevent device vendors, distributors or others to install/make multiple copies of the software in multiple devices while only paying for one or very few copies or licenses.
Due to such deficiencies, software makers sometimes require activation by remote keying such as over the Internet so that a central depository of software serial numbers/keys is maintained by the software maker. This would prevent duplicate keys or serial numbers from being entered because a match could then be performed. Such remote activation allows only a single use of a given key or serial number so that if copied or installed in other devices, the unauthorized copy of the software will not functional, or will function in only limited ways or over a limited period. However, such a scheme is primarily of use in preventing unauthorized retail use and does not address the vendor/distributor problem. Such a scheme employed at that level would be so cumbersome as to be impractical.
In the case of device vendors, distributors, VARs (Value Added Resellers) and like entities, software is often provided in batches or lots, such that the entity orders thousands of copies or pays for the licensing fees to thousands of copies of the software at one time. However, for the software maker, after this first set is sold, it is impossible to determine what happens in subsequent instances. For instance, an entity could buy ten thousand copies (or pay licensing fees to use the same copy ten thousand times) and make unpaid-for use of the next forty thousand copies. This leaves the software maker with less revenue than they should have had.
This is particularly problematic when a software manufacturer produces software intended to be bundled with a third party device. Since the bundling is not controlled by the software manufacturer, there has been a need for a mechanism which will prevent unauthorized duplication of software that is to be bundled with devices. Since the device production is by a third party, and not the software manufacturer, there is currently little or no effective control over the bundling.